package com.gyd.marte;

import java.text.MessageFormat;

import com.gyd.dto.User;
import com.gyd.enums.Estado;
import com.gyd.sqlite.CRUDsqlite;
import com.gyd.sqlite.UserSQLiteHelper;
import com.gyd.utils.Utils;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class registroActivity extends Activity {
	CRUDsqlite sql;
	EditText nombre;
	EditText apellido;
	EditText userName;
	EditText password;
	Spinner edad;

	String edad_ = "20";
	String estado_ = "CASADO";
	String hijos_ = "0";
	Spinner estado;
	Spinner hijos;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_registro);

		getvalores();

		edad = (Spinner) findViewById(R.id.spedad);
		estado = (Spinner) findViewById(R.id.spestadoCivil);
		hijos = (Spinner) findViewById(R.id.sphijo);

		spinners();

		Button submit = (Button) this.findViewById(R.id.submit);
		submit.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				Log.i("INFOTAG", "save values!! ");
				saveRegistros();
				lanzarPromos(arg0);

			}

		});
	}

	public void lanzarPromos(View view) {
		// Intent i = new Intent(this, InitialActivity.class );
		Intent i = new Intent(this, MarteActivity.class);
		startActivity(i);
	}

	public void spinners() {
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
				this, R.array.Edad, android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		edad.setAdapter(adapter);

		edad.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> spinnerEdad,
					View seleccionItem, int position, long id) {
				edad_ = spinnerEdad.getItemAtPosition(position).toString();
				Log.i("INFOTAG", "edad obtenido:" + estado_);
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub

			}
		});

		ArrayAdapter<CharSequence> adapterEstado = ArrayAdapter
				.createFromResource(this, R.array.Estado,
						android.R.layout.simple_spinner_item);
		adapterEstado
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		estado.setAdapter(adapterEstado);

		estado.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> spinnerEstado,
					View seleccionItem, int position, long id) {
				estado_ = spinnerEstado.getItemAtPosition(position).toString();
				Log.i("INFOTAG", "estado:" + estado_);
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
			}
		});

		ArrayAdapter<CharSequence> adapterhijos = ArrayAdapter
				.createFromResource(this, R.array.noHijos,
						android.R.layout.simple_spinner_item);
		adapterhijos
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		hijos.setAdapter(adapterhijos);

		hijos.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> spinnerEstado,
					View seleccionItem, int position, long id) {
				hijos_ = spinnerEstado.getItemAtPosition(position).toString();
				Log.i("INFOTAG", "estado:" + estado_);
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
			}
		});

	}

	public void saveRegistros() {
		Log.i("INFOTAG", "creating the user!! ");
		User nuevoUsuario = new User(nombre.getText().toString(), password
				.getText().toString(),apellido.getText().toString(),
				Utils.string2Integer(edad_), Utils.string2Enum(estado_),
				Utils.string2Integer(hijos_));
		Log.i("INFOTAG", "connection to database!! ");
		conectar(this);
		Log.i("INFOTAG", "finally connection to database!! ");
		insert(nuevoUsuario);
		Cursor cr = getTodosLosUsuarios("user");
		if (cr != null) {
			cr.moveToFirst();
			Log.i("INFOTAG", "nombre" + cr.getString(0));
			Log.i("INFOTAG", "apellido" + cr.getString(1));
		}
		Log.i("INFOTAG", "no hay :(");

	}

	public void getvalores() {
		nombre = (EditText) this.findViewById(R.id.regnombre);
		apellido = (EditText) this.findViewById(R.id.regapellido);
		userName = (EditText) this.findViewById(R.id.userName);
		password = (EditText) this.findViewById(R.id.registroPass);

	}

	public void cerrar(View view) {
		finish();
	}

	UserSQLiteHelper usdbh;
	SQLiteDatabase db;

	public void conectar(Context contexto) {

		try {
			Log.i("INFOTAG", "tratando de obtener la conexion");
			usdbh = new UserSQLiteHelper(contexto, "DBUsuarios", null, 1);
			Log.i("INFOTAG", "salida obteniendo la conexion");
			db = usdbh.getWritableDatabase();
			Log.i("INFOTAG", "se obtuvo la conexion");
		} catch (Exception e) {
			Log.e("ERRORTAG", "Exception in inserting data  " + e);
		}
	}

	public void lectura() {
		db = usdbh.getReadableDatabase();
	}

	final String sqlCreate = "CREATE TABLE User (codigo INTEGER, nombre TEXT,apellido TEXT, edad INTEGER,"
			+ "estadocivil TEXT,noHijos INTEGER)";

	public void insert(User us) {

		if (db != null) {

			try {
				String sql = "INSERT INTO User (codigo, nombre,apellido,edad,estadocivil,noHijos) "
						+ "VALUES ({0},{1},{2},{3},{4},{5})";
				String insert = MessageFormat.format(sql, "1",
						"'" + us.getNombre() + "'", "'" + us.getApellido()
								+ "'", us.getEdad(), "'" + us.getEstadoCivil()
								+ "'", us.getNoHijos());
				Log.i("INFOTAG", "query:" + insert);
				db.execSQL(insert);
			} catch (Exception e) {
				Log.e("ERRORTAG", "Exception in inserting data  " + e);
			} finally {

			}

		}
	}

	public Cursor getTodosLosUsuarios(String table) {
		this.lectura();
		Cursor cur = db.rawQuery("SELECT * from " + table, new String[] {});
		return cur;
	}

}
